class Solution {
public:
    void sortColors(vector<int>& nums) {
        int n=nums.size(), left=-1, right=n, i=0;//因为现在还没找到0和2, 区间为0, 所以让left=-1, right=n
        while (i < right)
        {
            //[0,left] 0;  [left+1, i-1] 1;  [i, right-1]待处理;  [right, n-1] 2
            if (nums[i] == 0)
                swap(nums[++left], nums[i++]);
            else if (nums[i] == 1)
                i++;
            else //2
                swap(nums[--right], nums[i]);
        }
    }
};
//时间: O(N)